package shj.blackberry.i.util;
/**
 * 卦属性分析类：卦名、宫、世、五行等
 * 获取某卦在8×8坐标中的位置（宫，世），
 * @author shan.hongjie
 *
 */
public class GuaAttribute {
	/**
	 * 卦的10标识，第一位为第一爻（底爻）
	 */
	String guaCode = "";
	/**
	 * 卦名
	 */
	String guaName = "";
	
	/**
	 * 该卦在64(0-7)*(0-7)卦中的位置
	 */
	int[] guaPosition= new int[2]; 
	
	public GuaAttribute(String guaCode)throws Exception{
		this.guaCode = guaCode;
		boolean hasFound = false;
		for(int i=0;i<8;i++){
			for(int j=0;j<8;j++){
				if(Constants.AllGuasCode[i][j].equals(this.guaCode)){
					hasFound = true;
					guaPosition[0]=i;
					guaPosition[1]=j;
					break;
				}
			}
			if(hasFound){
				break;
			}
		}
		if(!hasFound){
			throw new Exception("gua代码有错");	
		}
		
		this.guaName = Constants.AllGuasName[guaPosition[0]][guaPosition[1]];
	}
	
	/**
	 * 根据该卦在某宫的位置获取其世在哪一爻上
	 * @param num
	 * @return
	 */
	public int getShiNumber(){
		int shi=0;
		int number = guaPosition[1];//在宫中的位置(0-7)
		if(number == 0){
			shi = 6;
		}else if (number == 1 || number == 2 || number == 3 || number == 4 || number == 5){
			shi = number;
		}else if (number == 6){
			shi = 4;
		}else if (number == 7){
			shi = 3;
		}
		return shi;
	}
	
	/**
	 * 获取该卦所处宫的名字
	 * @return
	 */
	public String getGong(){
		return Constants.AllGuasName[guaPosition[0]][0];
	}
	
	/**
	 * 获取卦名
	 * @return
	 */
	public String getGuaName(){
		return this.guaName;
	}
}
